In a typical video processing scenario, a video is first encoded to reduce consumption of bandwidth during transfer of the video. The encoded video is then streamed to a client. With use of 360 degrees video, the storage and transfer of the 360 degrees video poses a much bigger challenge than that of traditional video. Also, at any given point of time, the 360 degrees video to be displayed is limited by field of view of human and hence, not entire 360 degrees video can be viewed at the given point of time. This indicates redundancy in huge amount of information carried in 360 degrees video. Hence, there is a need for optimizing 360 degrees video.
In general, view optimization method includes preserving quality of the 360 degrees video for content inside the field of view, and reducing the quality for content outside the field of view. One existing technique for performing view optimization includes mapping a spherical video frame onto the surfaces of a cube. The front view of the cube is preserved while the four side views and the one back side view are suppressed with various amounts depending on the mapping method, such as a pyramidal mapping method. However, such a view optimization suffers from several drawbacks such as large redundancy in storing the view point array as each view point is independent. The view point here refers to a specific view orientation of the spherical video frame. In addition, since all view point arrays are independent there is longer latency when switching views while playing the 360 degrees video. Therefore, there remains an unmet need for performing view optimization of 360 degrees video efficiently.